<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>

        // 定义数组三种方式
        var car = ["bmw", "benz", "bentian"];
        var car2 = new Array("bmw", "benz", "log4j");
        var car4 = [];
        car4[0] = "1";
        car4[1] = 2;

        //1.join方法指定分隔符 把数组变成字符串
        console.log(car4.join("$$$"));

        //2.删除最后一个元素
        car4.pop();
        //3.在最后增加一个元素
        car4.push("phsh element");
        console.log(car4);

        //4.删除开头元素操作
        car2.shift();
        //5.开头加元素 
        car2.unshift('aodi', 'toyoto');
        console.log(car2)

        // 6.concat合并生成一个新数组 原数组不变
        var newarr = car.concat(car2)

        // 7.reverse() 翻转  原数组改编
        car2.reverse()

        //8.splice方法 
        /* 
        Array.splice(index,howmany,arr1,arr2...) ，删除元素并添加元素，
        从index位置开始删除howmany个元素，并将arr1、arr2...数据从index位置依次插入。
        howmany为0时，则不删除元素。原数组改变。
        */
        car2.splice(0, 3, 'one', 'two', 'three')
        console.log(car2)


        //遍历数组几种方式
        for (var a = 0; a < car2.length; a++) {
            console.log(car2[a]);
        }

        for (let i in car2) {
            console.log(car2[i]);
        }

        for (let i of car2) {
            console.log(i);
        }
        car2.forEach(element => {
            console.log(element);
        });

        // 对象数组
        const objarr = [{ name: 'lin', age: 22 }, { name: 'sb', age: 999 }]
        // 数组都是引用传递  会改变原来数组里的对象内容
        const objtest = objarr[1]
        // 可以给对象加属性
        objtest.address = 'shenzhen'
        console.log(objarr);



        const arrx = [1, 2]
        arrx.length = 0
        console.log(arrx);

        for (var i = 0; i <5; i++) {
            setTimeout(() => {
                console.log(i);
            },1)
        }
    </script>
</head>

<body>

</body>

</html>